package com.launch.wlfw.controller;

import com.github.pagehelper.PageInfo;
import com.launch.wlfw.common.Result;
import com.launch.wlfw.pojo.TypeInfo;
import com.launch.wlfw.service.TypeInfoService;
import com.launch.wlfw.util.DataInfo;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;

/**
 * @ClassName TypeInfoController
 * @Description：
 * =================@RequestMappering：用来处理请求地址映射，放在类上是让类中方法的地址以此为父路径，放在方法上加上父类地址表示此方法的实现
 * =================@Repon
 * =================
 * @Author 29172
 * @Date 2023/6/30 15:23
 */
@Controller
// @ResponseBody +  @Controller = @RestController
public class TypeInfoController {
    @Resource
    private TypeInfoService typeInfoService;

    // 加载JSP页面
    @RequestMapping("typeIndex")
    public String typeIndex(){
        return "type/typeIndex";
    }

    // 加载JSP页面的数据并主页展示
    @RequestMapping("/typeAll")
    @ResponseBody // 返回的是JSON数据
    // Model数据 ，  View 视图/页面
    /**
     * public class DataInfo implements Serializable，
     * 对象转化成成字节序列就是对象的序列化，而字节序列转化成对象就是对象的反序列化
     */
    public DataInfo list(TypeInfo typeInfo ,
                         @RequestParam("page") Integer pageNum,
                         @RequestParam("limit") Integer pageSize){
        PageInfo<TypeInfo> allTypeInfo = typeInfoService.findAllTypeInfo(typeInfo, pageNum, pageSize);
        return DataInfo.ok(allTypeInfo);
    }

    //跳转到添加页面
    @RequestMapping("typeAdd")
    public String toAddPaper() {
        return "/type/typeAdd";
    }
    //新增类型信息
    @RequestMapping("/addTypeSubmit")
    @ResponseBody
    public DataInfo addTypeInfo(TypeInfo typeInfo){
        typeInfoService.addTypeInfo(typeInfo);
        return DataInfo.ok(typeInfo);
    }

    //删除类型信息
    @RequestMapping("/deleteType")
    @ResponseBody
    public Result<Integer> delTypeInfoByID(String ids){
        Integer integer = typeInfoService.delTypeInfoByID(ids);
        return Result.success(integer);
    }


    //跳转到修改信息页面
    @RequestMapping("queryTypeInfoById")
    public String queryTypeInfoById(Long id , Model model){
        TypeInfo typeInfo = typeInfoService.queryById(id);
        model.addAttribute("info" , typeInfo);
        return "type/updateType";
    }

//    @RequestMapping("updatequeryTypeInfoByIdType")
//    public String updateTypeInfo(){
//        return "/type/updateType";
//    }

//    //跳转到添加页面
//    @RequestMapping("typeAdd")
//    public String toAddPaper() {
//        return "/type/typeAdd";
//    }
//
    //更改后提交
    @RequestMapping("/updateTypeSubmit")
    @ResponseBody // 返回JSON 数据
    // get ： 参数拼接在url
    // post ： 参数在请求体 ， @RequestBody : 获取请求体的数据
    public DataInfo updateTypeInfo(@RequestBody TypeInfo typeInfo){
        typeInfoService.updateTypeInfo(typeInfo);
        return DataInfo.ok(typeInfo);
    }
//    public String updateTypeInfo(Model model, TypeInfo typeInfo){
//        typeInfoService.updateTypeInfo(typeInfo);
//        typeInfo = typeInfoService.queryById(typeInfo.getId());
//        model.addAttribute("typeInfo",typeInfo);
//        return "redirect:/type/typeIndex";
//    }
}
